﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ECommerce.Model.Contabilidad.Carritos
{
    public class ItemCarrito : ECommerce.Model.Objeto
    {
        private int cantidad;
        public int Cantidad
        {
            get { return cantidad; }
            set { cantidad = value; }
        }
        public ECommerce.Model.Productos.Precios.Moneda Moneda
        {
            get { return this.PrecioSeleccionado.Moneda; }
        }
        public double Total
        {
            get { return this.Cantidad * this.PackageSeleccionado.CantidadXBulto * this.PrecioSeleccionado.Valor; }
        }
        private ECommerce.Model.Productos.Precios.Precio precioSeleccionado;
        public ECommerce.Model.Productos.Precios.Precio PrecioSeleccionado
        {
            get { return precioSeleccionado; }
            set { precioSeleccionado = value; }
        }
        private ECommerce.Model.Productos.Package packageSeleccionado;
        public ECommerce.Model.Productos.Package PackageSeleccionado
        {
            get { return packageSeleccionado; }
            set { packageSeleccionado = value; }
        }
        private ECommerce.Model.Productos.Producto producto;
        public ECommerce.Model.Productos.Producto Producto
        {
            get { return this.producto; }
            set { this.producto = value; }
        }
        public override void Load(int ident)
        {
            base.Load(ident);
            this.Id = ident;
            this.Load(ECommerce.DAO.Cache.Contabilidad.Carritos.ItemCarrito.GetItemCarritoById(ident));
            if (this.Id == 0)
            {
                this.Id = ident;
                this.Load(ECommerce.DAO.SQL.Contabilidad.Carritos.ItemCarrito.GetItemCarritoById(ident));
                ECommerce.DAO.Cache.Contabilidad.Carritos.ItemCarrito.SetItemCarrito(this);
            }
        }
        public override void Load(System.Data.DataRow dr)
        {
            base.Load(dr);
            ECommerce.Factory.Contabilidad.Carritos.ItemCarrito.Load(this, dr);
            ECommerce.DAO.Cache.Contabilidad.Carritos.ItemCarrito.SetItemCarrito(this);
        }
        public override void Save()
        {
            base.Save();
            this.Id = ECommerce.DAO.SQL.Contabilidad.Carritos.ItemCarrito.SetItemCarrito(this);
            this.Id = ECommerce.DAO.Cache.Contabilidad.Carritos.ItemCarrito.SetItemCarrito(this);
        }
        public override void Del()
        {
            base.Del();
            this.Id = ECommerce.DAO.Cache.Contabilidad.Carritos.ItemCarrito.DelItemCarrito(this);
        }
        public ItemCarrito()
        { 
        }
        public ItemCarrito(int Cantidad, ECommerce.Model.Productos.Precios.Precio PrecioSeleccionado, ECommerce.Model.Productos.Package PackageSeleccionado, ECommerce.Model.Productos.Producto Producto)
        {
            this.Cantidad = Cantidad;
            this.PrecioSeleccionado = PrecioSeleccionado;
            this.PackageSeleccionado = PackageSeleccionado;
            this.Producto = Producto;
        }
        public override string ToString()
        {
            return this.Producto.ToString() + " " + this.PackageSeleccionado.ToString() + " " + this.PrecioSeleccionado.ToString() + " " + this.PrecioSeleccionado.Moneda.Simbolo.ToString() + " " + (this.PrecioSeleccionado.Valor * this.PackageSeleccionado.CantidadXBulto).ToString("f"); 
        }
    }
}
